pandas factorize
#pandas
pandas.factorize — pandas 0.23.4 documentation
pd.factorizeでカテゴリ変数を数値に変換する - hatunina’s blog
トレーニングセットで行った変換をテストセットにも適用する際に便利ですね。
labels, uniques = Series.factorize()
みたいに、2つの返り値になっていて、存在理由が??と思ったけど、
uniques.get_indexer(別のdataframeのseries)
みたいにして、2つのデータセットで、共通のレベル数字を当てられるので、同じモデルの適用ができる。
その他のメリットはある?
https://www.kaggle.com/ogrellier/user-level-lightgbm-lb-1-4480/comments
min(), max(), mean()に意味があると。 
頻度の多いものから、数字が割り当てられる(0スタート)なので、
groupbyしたときなどで、
mean: 平均の数字の大きいものは、よりマイナーな’値であるということをしめすので、分散・情報量の大きさを示してることになるかも。
max: そのgroupでの、カテゴリ数(+1)を示す
count: これはそのままだけど。
疑似コード Google Analytics のデータのイメージ。
code: factorize.py
(df
.assign(os_lbl = lambda x: (x.operatingSystem.factorize())0)
.groupby('channelGrouping')'os_lbl'
.agg("mean", "count", "max")
).sort_values(by="mean", ascending=False)
one-hot-encodingと比べると、情報を集約してる形にはなる。
以下で、PCAして、固有値の分でうまく情報を残すのよりは、粗いのかもだけど、手は動かしやすい。SQLで行ける感じでもある. 解釈は難しいけど。
one-hot-encodingしてpcaして特徴量
#encoding